package com.etl.plugin.datasource.pool;

import com.etl.base.DataSourceInfo;

/**
 * 最上层线程池
 * 连接池接口约束
 * 为什么要用抽象：整体的类类似于一个全部都是向下继承实现
 * 对于代码的抽取、封装、当我们需要特定功能点，对他形成约束，扩展的功能
 */
public interface IBasePool<T> {


    /**
     * 初始化
     */
    public void init(DataSourceInfo dataSourceInfo);


    /**
     * 获取
     */
    public T pull();


    /**
     * 归还
     */
    public void back(T conn);


    /**
     * 销毁
     */
    public void destroy();


    /**
     * 获取连接、从线程池获取
     */
    public T  newConn(DataSourceInfo dataSourceInfo);


    /**
     * 刷新
     */
    public void refresh();

    /**
     * 心跳
     */
    public void heartbeat();

    /**
     * 关闭
     */
    public void closeConn(T conn);



}
